package com.flejay.dreamrecruiter.service;

/**
 * Interface pour le service de logging centralis�.
 * 
 * Permet d'homogeneiser le traitement des logs dans l'application. 
 * 
 * Les messages de log contiennent des '{}' qui sont remplac�s par les objets
 * donn�es. Les objets doivent etre communiques dans le meme ordre que leur
 * declarations.
 * 
 * Exemple d'utilisation :
 * 
 * logService.info(this.getClass(),"Valeur 1 : {}, valeur2 : {}", valeur1,
 * valeur2).
 * 
 * @author Victor Fleurant
 *
 */
public interface ILoggingService {

	/**
	 * Log la classe au niveau de trace error.
	 * 
	 * @param class la classe � logger
	 * @param message
	 *            le message � logger contenant �ventuellement les '{}'
	 * @param objects
	 *            les objets � remplacer
	 */
	void error(Class<?> clazz, String message, Object... objects);
	
	/**
	 * Log la classe au niveau de trace error.
	 * 
	 * @param class la classe � logger
	 * @param message
	 *            le message � logger contenant �ventuellement les '{}'
	 * @param objects
	 *            les objets � remplacer
	 */
	void info(Class<?> clazz, String message, Object... objects);
	
	/**
	 * Log la classe au niveau de trace Debug.
	 * 
	 * Le message n'est logger que si le niveau de trace debug est activ�.
	 * 
	 * @param class la classe � logger
	 * @param message
	 *            le message � logger contenant éventuellement les '{}'
	 * @param objects
	 *            les objets � remplacer
	 */
	void debug(Class<?> clazz, String message, Object... objects);
	
}
